package projeto;

import java.io.File;

/**
 * Classe Livro que serïe usada no projeto para a criacao de um novo livro dentro so sistema.
 * @author equipe
 *
 */

public class Livro {
	
	private String Nome;
	private String Autor;
	private String Descricao;
	private String Tema;
	private String Dono;
	private File Foto;
	private Sala Localizacao;
	private String Id;
	private int Estrelas;
	
	/**
	 * Construtor que recebe parametros essenciais que definem um livro.
	 * @param Nome
	 * 		Nome do livro
	 * @param Autor
	 * 		Autor do livro
	 * @param Descricao
	 * 		Descricao do livro
	 * @param Tema
	 * 		Tema do livro
	 * @param Dono
	 * 		Dono do livro
	 * @param Foto
	 * 		Foto da capa do livro
	 * @param Localizacao
	 * 		Localizacao atual do livro
	 * @param Id
	 * 		Identificador do livro
	 * @param Estrelas
	 * 		Classificacao do livro por quantidade de estrelas.
	 * @throws
	 * 		Quando um dos parametros recebidos forem invalidos ou inexistentes.
	 */

	// por enquanto sem o atributo foto, localizacao e ID
	public Livro(String Nome, String Autor, String Tema, Sala Localizacao)throws Exception {
		if(Nome == null || Nome.equals("")){
			throw new Exception("Nome Invalido");
		}
		if(Autor == null || Autor.equals("")){
			throw new Exception("Autor Invalido");
		}

		if(Tema == null || Tema.equals("")){
			throw new Exception("Tema Invalido");
		}

		if(Localizacao == null){
			throw new Exception("Localizacao Inexistente");
		}
		
		this.Nome = Nome;
		this.Autor = Autor;
		//this.Descricao = Descricao;
		this.Tema = Tema;
		//this.Dono = Dono;
		//this.Foto = Foto;
		this.Localizacao = Localizacao;
		//this.Id = Id;
		//this.Estrelas = Estrelas;
	}
	
	

	/**
	 * Metodo capaz de acessar o nome do livro. 
	 * @return
	 * 		Nome do livro.
	 */
	
	public String getNome(){
		return Nome;
	}
	
	/**
	 * Metodo capaz de acessar o nome do autor do livro.
	 * @return
	 * 		Autor do livro.
	 */
	public String getAutor(){
		return Autor;
	}
	
	/**
	 * Metodo capaz de acesssar uma breve descricao do livro.
	 * @return
	 * 		Descricao do livro.
	 */
	
	public String getDescricao(){
		return Descricao;
	}
	
	/**
	 * Metodo capaz de acessar o tema do livro.
	 * @return
	 * 		Tema do livro.
	 */
	
	public String getTema(){
		return Tema;
	}
	
	/**
	 * Metodo capaz de acessar o dono do livro
	 * @return
	 * 		Dono do livro
	 */
	public String getDono(){
		return Dono;
	}
	
	/**
	 * Metodo capaz de acessar a foto de capa do livro
	 * @return
	 * 		Foto de capa do livro.
	 */
	
	public File getFoto(){
		return Foto;
	}
	
	/**
	 * Metodo capaz de acessar a localizacao atual do livro.
	 * @return
	 * 		Localizacao atual do livro.
	 */
	public Sala getLocalizacao(){
		return Localizacao;
	}
	
	/**
	 * Metodo capaz de acessar o Id do livro.
	 * @return
	 * 		Id do livro.
	 */
	public String getId(){
		return Id;
	}
	
	/**
	 * Metodo capaz de modificar o nome do livro.
	 * @param nome
	 * 		Nome do livro.
	 */

	public void setNome(String nome)throws Exception{
		if(nome == null || nome.equals("")){
			throw new Exception("Nome Invalido");
		}
		this.Nome = nome;
	}
	
	/**
	 * Metodo capaz de modificar o autor do livro.
	 * @param Autor
	 * 		Autor do livro.
	 */
	
	public void setAutor(String Autor)throws Exception{
		if(Autor == null || Autor.equals("")){
			throw new Exception("Autor Invalido");
		}
		this.Autor = Autor;
	}
	
	/**
	 * Metodo capaz de modificar a descricao do livro.
	 * @param Descricao
	 * 		Descricao do livro.
	 */
	public void setDescricao(String Descricao) throws Exception{
		if(Descricao.equals("") || Descricao == null){
			throw new Exception("Descricao Invalida");
		}
		this.Descricao = Descricao;
	}
	
	/**
	 * Metodo capaz de modificar o tema do livro.
	 * @param Tema
	 * 		Tema do livro.
	 */
	public void setTema(String Tema)throws Exception{
		if(Tema == null || Tema.equals("")){
			throw new Exception("Tema Invalido");
		}
		this.Tema = Tema;
	}
	
	/**
	 * Metodo capaz de modificar o dono do livro.
	 * @param Dono
	 * 		Dono do livro.
	 */
	public void setDono(String Dono)throws Exception{
		if(Dono.equals("") || Dono == null){
			throw new Exception("Dono Invalido");
		}
		this.Dono = Dono;
	}
	
	/**
	 * Metodo capaz de modificar a foto do livro.
	 * @param Foto
	 * 		Foto de capa do livro.
	 */
	public void setFoto(File Foto) throws Exception{
		if(Foto == null){
			throw new Exception("Foto Invalida");
		}
		this.Foto = Foto;
	}
	
	/**
	 * Metodo capaz de modificar a localizacao atual do livro.
	 * @param Localizacao
	 * 		Localizacao atual do livro.
	 */
	public void setLocalizacao(Sala Localizacao)throws Exception{
		if(Localizacao == null){
			throw new Exception("Localizacao Inexistente");
		}
		this.Localizacao = Localizacao;
	}
	
	/**
	 * Metodo capaz de modificar o Id do livro.
	 * @param Id
	 * 		Id do livro.
	 */
	public void setId(String Id)throws Exception{
		if(Id == null || Id.equals("")){
			throw new Exception("Id Invalido");
		}
		this.Id = Id;
	
	}
	/**
	 * Metodo capaz de acessar a quantidade de estrelas de um livro.
	 * @return
	 * 	Quantidade de Estrelas
	 */
	public int getEstrelas() {
		return Estrelas;
	}

	/**
	 * Metodo capaz de modificar a quantidade de estrelas de um livro.
	 * @param estrelas
	 * 		Estrelas de um livro.
	 */
	public void setEstrelas(int estrelas) {
		Estrelas = estrelas;
	}
	
	@Override
	public String toString() {
		return getNome() + getDono();
	}
}